The present invention relates to data networking and more particularly to routing and addressing.
In recent years, the Internet has undergone enormous expansion including expansion in a number of interconnected devices. Internet routing techniques generally operate on individual packets. Each packet has a destination address specified by the packet sender and this destination address is used in making forwarding decisions at intermediate nodes between the sender and the destination. In an idealized realization of the Internet, each node would have a globally significant unique IP address for use in specifying the node as a packet destination. However, under the currently prevalent version of the Internet Protocol (IP), version 4, there are in fact a limited number of such addresses. Therefore, many devices have private unregistered addresses that are only usable for routing within an isolated realm. A technique known as Network Address Translation maps IP addresses between such locally significant unregistered locally significant addresses and globally significant registered addresses.
NAT operates on a gateway node between a realm that employs private unregistered addresses and an external realm that uses the globally unique registered addresses. The NAT gateway maps ports on the exterior-facing interface to globally significant addresses within the private realm. This arrangement operates in a relatively straightforward fashion for client-server sessions where clients within the private realm initiate sessions with servers in the global network. Both the address of the NAT gateway and the globally significant address of the server may be obtained by use of conventional domain name service (DNS) techniques.
It is much more difficult, however, for a client in the global network to contact a client or server located in the private address realm because of the need to somehow advertise the locally significant private address, or an equivalent usable in IP routing, outside the private address realm. One way to do this is a one-to-one mapping between interior private addresses and public globally significant addresses, but this defeats the objectives of employing NAT in the first place such as conservation of addresses. One can also map, e.g., a NAT gateway's HTTP port to a particular private address, the SMTP port to another private address, etc. This technique will not accommodate a large number of privately addressed nodes.
A new generation of Internet services requires peer-to-peer, client-to-client and client-to-server interactions that do not fit within the model accommodated by NAT. Consider, for example, Voice-over-IP (VoIP) where to call a voice-equipped node within the private address realm it is necessary to initiate a session with that node from outside the private realm. To solve this problem, one technique is to incorporate application level functionality within the NAT gateway so that the gateway can establish higher-level protocol sessions and forward packets based in part on application layer packet content. This greatly increases the amount of processing that must be done on packets passing through the gateway and also increases the amount of state information that the gateway must store.
What is needed are systems and methods for interoperating between realms employing private unregistered addresses and realms employing globally unique registered addresses while allowing nodes outside the private realm to initiate sessions with nodes inside the private realm.